Question 1 (Loading in Data)
Load the 60k version of Ontario Inforce Auto that can be found in the subfolders “S:/Pricing/Data” (in fst format).
The filename is Inf_a_cw_20181031_CTR_ON_60K.fst. Note that CTR (Code Transform) has been run on the builder data so that it’s ready to be used for various pricing purposes.
INFORCE.PATH <- "S:/Pricing/Data/Inforce/"
INFORCE.AUTO.DATA <- read_fst(paste0(INFORCE.PATH,"Inf_a_cw_20181031_CTR_ON_60K.fst"))
Question 2 (Data Manipulation)
Subset your data to only include policies that have a new vehicle.
DATA.Q2 <- INFORCE.AUTO.DATA %>%
filter(Veh_Age_Nb <= 0)
Note here the original unsubsetted data is will be unchanged and the subsetted data is called DATA.Q2. To confirm that the data has been subsetted correctly one can check the levels of the variables.
print(unique(DATA.Q2$Veh_Age_Nb))
[1] 0 -1 -2
Question 3 (Data Manipulation)
Get a table of all principal drivers that have been holding a license for more than 5 years and less than 10 years. Keep only the policy number, vehicle ID number, driver ID number, effective date of the policy, number of years the driver has been licensed, gender and the driver total premium term amount.
DATA.Q3 <- INFORCE.AUTO.DATA %>%
select(Pol_Policy_No,
Veh_Id_No,
Dri_Id_No,
Pol_Eff_Dt,
Dri_Type_Cd,
Dri_Yrs_Licensed_AU_Nb,
Prm_Trm_Dri_Tot_Am,
Dri_Gender_Cd) %>%
filter(Dri_Type_Cd == "P" &
Dri_Yrs_Licensed_AU_Nb > 5 &
Dri_Yrs_Licensed_AU_Nb < 10)
Calculate the average premium by years licensed and by gender.
x <- DATA.Q3 %>%
group_by(Dri_Gender_Cd, Dri_Yrs_Licensed_AU_Nb) %>%
summarise(Avg_Prm = mean(Prm_Trm_Dri_Tot_Am))
Question 4 (Data Pre-processing)
Create a new variable for analysis purposes. Using the home main location variable as a proxy, create a new variable that is an indicator of whether or not someone this auto client is a multiline client (has auto and home) or not.
Note: This is not a perfect indicator, since sometimes the home info is not entered but we will use this as a proxy for this exercise.
DATA.Q4 <- INFORCE.AUTO.DATA %>%
mutate(multiline = ifelse(Clt_Home_Main_Location_Cd == "", 0, 1))
Question 5 (Graphing)
Plot the average driver level premium by vehicle age by gender. Include a bar graph for exposure.
First, create a table with average driver level premium by vehicle age by gender along with exposure counts on a driver level.
Second, plot the average driver level premium by vehicle age by gender. Include a bar graph for exposure.
DATA.Q5 <- ungroup(DATA.Q5)
p <- plot_ly(DATA.Q5, color =~Dri_Gender_Cd, colors = c("red","darkgreen")) %>%
add_lines(x = ~Veh_Age_Nb,
y = ~Avg_Prm) %>%
add_bars(x = ~Veh_Age_Nb,
y = ~Exposures,
yaxis = "y2",
opacity = 0.75) %>%
layout(title = "Average Premium by Vehicle Age by Gender",
xaxis = list(title = "Vehicle Age", range = c(-2, 25)),
yaxis = list(title = "Average Premium", side = "left", overlaying = "y2"),
barmode = "stack",
yaxis2 = list(title = "Exposure", side = "right"))
LS0tDQp0aXRsZTogJ1IgVHJhaW5pbmc6IDA1IC0gQ2FzZSBTdHVkeSBTb2x1dGlvbnMnDQphdXRob3I6ICJQcmljaW5nIElubm92YXRpb24gVGVhbSINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazoNCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcw0KICAgIHRoZW1lOiBmbGF0bHkNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDogeWVzDQotLS0NCg0KDQpgYGB7ciBzZXR1cCwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZWNobyA9IEZBTFNFfQ0KbGlicmFyeShmc3QpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShwbG90bHkpDQprbml0cjo6b3B0c19jaHVuayRzZXQod2FybmluZyA9IEYsIG1lc3NhZ2UgPSBGKQ0KYGBgDQoNCiMgUXVlc3Rpb24gMSAoTG9hZGluZyBpbiBEYXRhKQ0KDQpMb2FkIHRoZSA2MGsgdmVyc2lvbiBvZiBPbnRhcmlvIEluZm9yY2UgQXV0byB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgc3ViZm9sZGVycyAiUzovUHJpY2luZy9EYXRhIiAoaW4gZnN0IGZvcm1hdCkuDQoNClRoZSBmaWxlbmFtZSBpcyAqKkluZl9hX2N3XzIwMTgxMDMxX0NUUl9PTl82MEsuZnN0KiouIE5vdGUgdGhhdCBDVFIgKENvZGUgVHJhbnNmb3JtKSBoYXMgYmVlbiBydW4gb24gdGhlIGJ1aWxkZXIgZGF0YSBzbyB0aGF0IGl0J3MgcmVhZHkgdG8gYmUgdXNlZCBmb3IgdmFyaW91cyBwcmljaW5nIHB1cnBvc2VzLg0KDQoNCmBgYHtyIGVjaG8gPSBUUlVFfQ0KSU5GT1JDRS5QQVRIIDwtICJTOi9QcmljaW5nL0RhdGEvSW5mb3JjZS8iDQpJTkZPUkNFLkFVVE8uREFUQSA8LSAgcmVhZF9mc3QocGFzdGUwKElORk9SQ0UuUEFUSCwiSW5mX2FfY3dfMjAxODEwMzFfQ1RSX09OXzYwSy5mc3QiKSkNCmBgYA0KIA0KIyBRdWVzdGlvbiAyIChEYXRhIE1hbmlwdWxhdGlvbikNCiANClN1YnNldCB5b3VyIGRhdGEgdG8gb25seSBpbmNsdWRlIHBvbGljaWVzIHRoYXQgaGF2ZSBhIG5ldyB2ZWhpY2xlLiANCg0KYGBge3IgZWNobyA9IFRSVUV9DQpEQVRBLlEyIDwtIElORk9SQ0UuQVVUTy5EQVRBICU+JSANCiAgZmlsdGVyKFZlaF9BZ2VfTmIgPD0gMCkgDQpgYGANCg0KTm90ZSBoZXJlIHRoZSBvcmlnaW5hbCB1bnN1YnNldHRlZCBkYXRhIGlzIHdpbGwgYmUgdW5jaGFuZ2VkIGFuZCB0aGUgc3Vic2V0dGVkIGRhdGEgaXMgY2FsbGVkIERBVEEuUTIuIFRvIGNvbmZpcm0gdGhhdCB0aGUgZGF0YSBoYXMgYmVlbiBzdWJzZXR0ZWQgY29ycmVjdGx5IG9uZSBjYW4gY2hlY2sgdGhlIGxldmVscyBvZiB0aGUgdmFyaWFibGVzLg0KDQoNCmBgYHtyfQ0KcHJpbnQodW5pcXVlKERBVEEuUTIkVmVoX0FnZV9OYikpDQpgYGANCg0KIyBRdWVzdGlvbiAzIChEYXRhIE1hbmlwdWxhdGlvbikNCg0KR2V0IGEgdGFibGUgb2YgYWxsIHByaW5jaXBhbCBkcml2ZXJzIHRoYXQgaGF2ZSBiZWVuIGhvbGRpbmcgYSBsaWNlbnNlIGZvciBtb3JlIHRoYW4gNSB5ZWFycyBhbmQgbGVzcyB0aGFuIDEwIHllYXJzLiBLZWVwIG9ubHkgdGhlIHBvbGljeSBudW1iZXIsIHZlaGljbGUgSUQgbnVtYmVyLCBkcml2ZXIgSUQgbnVtYmVyLCBlZmZlY3RpdmUgZGF0ZSBvZiB0aGUgcG9saWN5LCBudW1iZXIgb2YgeWVhcnMgdGhlIGRyaXZlciBoYXMgYmVlbiBsaWNlbnNlZCwgZ2VuZGVyIGFuZCB0aGUgZHJpdmVyIHRvdGFsIHByZW1pdW0gdGVybSBhbW91bnQuDQogDQpgYGB7ciBlY2hvID0gVFJVRX0NCkRBVEEuUTMgPC0gSU5GT1JDRS5BVVRPLkRBVEEgJT4lIA0KICBzZWxlY3QoUG9sX1BvbGljeV9ObywNCiAgICAgICAgIFZlaF9JZF9ObywNCiAgICAgICAgIERyaV9JZF9ObywNCiAgICAgICAgIFBvbF9FZmZfRHQsDQogICAgICAgICBEcmlfVHlwZV9DZCwNCiAgICAgICAgIERyaV9ZcnNfTGljZW5zZWRfQVVfTmIsDQogICAgICAgICBQcm1fVHJtX0RyaV9Ub3RfQW0sDQogICAgICAgICBEcmlfR2VuZGVyX0NkKSAlPiUgDQogIGZpbHRlcihEcmlfVHlwZV9DZCA9PSAiUCIJJg0KICAgICAgICAgICBEcmlfWXJzX0xpY2Vuc2VkX0FVX05iID4gNSAmDQogICAgICAgICAgIERyaV9ZcnNfTGljZW5zZWRfQVVfTmIgPCAxMCkNCmBgYA0KDQpgYGB7cn0NCnByaW50KGhlYWQoREFUQS5RMykpDQpgYGANCg0KQ2FsY3VsYXRlIHRoZSBhdmVyYWdlIHByZW1pdW0gYnkgeWVhcnMgbGljZW5zZWQgYW5kIGJ5IGdlbmRlci4NCg0KYGBge3J9DQp4IDwtIERBVEEuUTMgJT4lIA0KICBncm91cF9ieShEcmlfR2VuZGVyX0NkLCBEcmlfWXJzX0xpY2Vuc2VkX0FVX05iKSAlPiUgDQogIHN1bW1hcmlzZShBdmdfUHJtID0gbWVhbihQcm1fVHJtX0RyaV9Ub3RfQW0pKSANCmBgYA0KDQoNCmBgYHtyfQ0KcHJpbnQoeCkgDQpgYGANCg0KIyBRdWVzdGlvbiA0IChEYXRhIFByZS1wcm9jZXNzaW5nKQ0KDQpDcmVhdGUgYSBuZXcgdmFyaWFibGUgZm9yIGFuYWx5c2lzIHB1cnBvc2VzLiBVc2luZyB0aGUgaG9tZSBtYWluIGxvY2F0aW9uIHZhcmlhYmxlIGFzIGEgcHJveHksIGNyZWF0ZSBhIG5ldyB2YXJpYWJsZSB0aGF0IGlzIGFuIGluZGljYXRvciBvZiB3aGV0aGVyIG9yIG5vdCBzb21lb25lIHRoaXMgYXV0byBjbGllbnQgaXMgYSBtdWx0aWxpbmUgY2xpZW50IChoYXMgYXV0byBhbmQgaG9tZSkgb3Igbm90Lg0KDQpOb3RlOiBUaGlzIGlzIG5vdCBhIHBlcmZlY3QgaW5kaWNhdG9yLCBzaW5jZSBzb21ldGltZXMgdGhlIGhvbWUgaW5mbyBpcyBub3QgZW50ZXJlZCBidXQgd2Ugd2lsbCB1c2UgdGhpcyBhcyBhIHByb3h5IGZvciB0aGlzIGV4ZXJjaXNlLg0KDQpgYGB7ciBlY2hvID0gVFJVRX0NCkRBVEEuUTQgPC0gSU5GT1JDRS5BVVRPLkRBVEEgJT4lIA0KICBtdXRhdGUobXVsdGlsaW5lID0gaWZlbHNlKENsdF9Ib21lX01haW5fTG9jYXRpb25fQ2QgPT0gIiIsIDAsIDEpKQ0KYGBgDQoNCmBgYHtyfQ0KcHJpbnQoaGVhZChEQVRBLlE0WywgYygnbXVsdGlsaW5lJywgJ0NsdF9Ib21lX01haW5fTG9jYXRpb25fQ2QnKV0pKQ0KYGBgDQoNCg0KDQojIFF1ZXN0aW9uIDUgKEdyYXBoaW5nKQ0KDQpQbG90IHRoZSBhdmVyYWdlIGRyaXZlciBsZXZlbCBwcmVtaXVtIGJ5IHZlaGljbGUgYWdlIGJ5IGdlbmRlci4gSW5jbHVkZSBhIGJhciBncmFwaCBmb3IgZXhwb3N1cmUuDQoNCkZpcnN0LCBjcmVhdGUgYSB0YWJsZSB3aXRoIGF2ZXJhZ2UgZHJpdmVyIGxldmVsIHByZW1pdW0gYnkgdmVoaWNsZSBhZ2UgYnkgZ2VuZGVyIGFsb25nIHdpdGggZXhwb3N1cmUgY291bnRzIG9uIGEgZHJpdmVyIGxldmVsLg0KDQpgYGB7cn0NCkRBVEEuUTUgPC0gSU5GT1JDRS5BVVRPLkRBVEEgJT4lDQogIG11dGF0ZShFeHBvc3VyZSA9IDEpICU+JSANCiAgc2VsZWN0KFZlaF9BZ2VfTmIsDQogICAgICAgICBQcm1fVHJtX0RyaV9Ub3RfQW0sDQogICAgICAgICBFeHBvc3VyZSwgDQogICAgICAgICBEcmlfR2VuZGVyX0NkKSAlPiUgDQogIGdyb3VwX2J5KERyaV9HZW5kZXJfQ2QsIFZlaF9BZ2VfTmIpICU+JSANCiAgc3VtbWFyaXNlKEF2Z19Qcm0gPSBtZWFuKFBybV9Ucm1fRHJpX1RvdF9BbSksDQogICAgICAgICAgICBFeHBvc3VyZXMgPSBzdW0oRXhwb3N1cmUpKQ0KYGBgDQoNClNlY29uZCwgcGxvdCB0aGUgYXZlcmFnZSBkcml2ZXIgbGV2ZWwgcHJlbWl1bSBieSB2ZWhpY2xlIGFnZSBieSBnZW5kZXIuIEluY2x1ZGUgYSBiYXIgZ3JhcGggZm9yIGV4cG9zdXJlLg0KDQpgYGB7ciBlY2hvID0gVFJVRX0NCg0KREFUQS5RNSA8LSB1bmdyb3VwKERBVEEuUTUpDQoNCnAgPC0gcGxvdF9seShEQVRBLlE1LCBjb2xvciA9fkRyaV9HZW5kZXJfQ2QsIGNvbG9ycyA9IGMoInJlZCIsImRhcmtncmVlbiIpKSAlPiUgDQogIGFkZF9saW5lcyh4ID0gflZlaF9BZ2VfTmIsDQogICAgICAgICAgICB5ID0gfkF2Z19Qcm0pICU+JSANCiAgYWRkX2JhcnMoeCA9IH5WZWhfQWdlX05iLA0KICAgICAgICAgICB5ID0gfkV4cG9zdXJlcywNCiAgICAgICAgICAgeWF4aXMgPSAieTIiLA0KICAgICAgICAgICBvcGFjaXR5ID0gMC43NSkgJT4lDQogIGxheW91dCh0aXRsZSA9ICJBdmVyYWdlIFByZW1pdW0gYnkgVmVoaWNsZSBBZ2UgYnkgR2VuZGVyIiwNCiAgICAgICAgIHhheGlzID0gbGlzdCh0aXRsZSA9ICJWZWhpY2xlIEFnZSIsIHJhbmdlID0gYygtMiwgMjUpKSwNCiAgICAgICAgIHlheGlzID0gbGlzdCh0aXRsZSA9ICJBdmVyYWdlIFByZW1pdW0iLCBzaWRlID0gImxlZnQiLCBvdmVybGF5aW5nID0gInkyIiksDQogICAgICAgICBiYXJtb2RlID0gInN0YWNrIiwNCiAgICAgICAgIHlheGlzMiA9IGxpc3QodGl0bGUgPSAiRXhwb3N1cmUiLCBzaWRlID0gInJpZ2h0IikpDQpgYGANCg0KYGBge3J9DQpwDQpgYGANCg0KIyBRdWVzdGlvbiA2IChGdW5jdGlvbnMpIC0gSW50ZXJtZWRpYXRlIHRvIEFkdmFuY2VkIExldmVsDQoNCldyaXRlIGEgZnVuY3Rpb24gdG8gcGxvdCBhbnkgbnVtZXJpYyBhdmVyYWdlIChvbiB0aGUgeSBheGlzKSBieSB0d28gdmFyaWFibGVzICgxIG51bWVyaWMgYW5kIDEgY2F0ZWdvcmljYWwpLg0KDQoNCg0KDQoNCmBgYHtyIGVjaG8gPSBUUlVFfQ0KUExPVC5HUkFQSCA8LSBmdW5jdGlvbihEQVRBLA0KICAgICAgICAgICAgICAgICAgICAgICBCWS5WQVIxLCAjIG51bWVyaWMgDQogICAgICAgICAgICAgICAgICAgICAgIEJZLlZBUjIsICMgY2F0ZWdvcmljYWwNCiAgICAgICAgICAgICAgICAgICAgICAgQVZHLA0KICAgICAgICAgICAgICAgICAgICAgICBDT0xPUi5HUkFQSCwNCiAgICAgICAgICAgICAgICAgICAgICAgWEFYSVMsDQogICAgICAgICAgICAgICAgICAgICAgIFlBWElTKXsNCiAgDQogIGRmIDwtIERBVEFbLGMoQlkuVkFSMSwgQlkuVkFSMiwgQVZHKV0NCiAgbmFtZXMoZGYpIDwtIGMoIkJZLlZBUjEiLCAiQlkuVkFSMiIsIkFWRyIpDQogIA0KICBEQVRBLlBMT1QgPC0gZGYgJT4lDQogICAgZ3JvdXBfYnkoQlkuVkFSMSwgQlkuVkFSMikgJT4lIA0KICAgIHN1bW1hcmlzZShBdmdfUHJtID0gbWVhbihBVkcsIG5hLnJtID0gVFJVRSksDQogICAgICAgICAgICAgIEV4cG9zdXJlcyA9IHN1bShuKCkpKQ0KICANCiAgREFUQS5QTE9UIDwtIHVuZ3JvdXAoREFUQS5QTE9UKQ0KICANCiAgcCA8LSBwbG90X2x5KERBVEEuUExPVCwgDQogICAgICAgICAgICAgICBjb2xvciA9fkJZLlZBUjIsIA0KICAgICAgICAgICAgICAgY29sb3JzID0gQ09MT1IuR1JBUEgpICU+JSANCiAgICBhZGRfbGluZXMoeCA9IH5CWS5WQVIxLA0KICAgICAgICAgICAgICB5ID0gfkF2Z19Qcm0pICU+JSANCiAgICBhZGRfYmFycyh4ID0gfkJZLlZBUjEsDQogICAgICAgICAgICAgeSA9IH5FeHBvc3VyZXMsDQogICAgICAgICAgICAgeWF4aXMgPSAieTIiLA0KICAgICAgICAgICAgIG9wYWNpdHkgPSAwLjc1KSAlPiUNCiAgICBsYXlvdXQodGl0bGUgPSAiQXZlcmFnZSBieSBWYXJpYWJsZXMiLA0KICAgICAgICAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSBYQVhJUyksDQogICAgICAgICAgIHlheGlzID0gbGlzdCh0aXRsZSA9IFlBWElTLCBzaWRlID0gImxlZnQiLCBvdmVybGF5aW5nID0gInkyIiksDQogICAgICAgICAgIGJhcm1vZGUgPSAic3RhY2siLA0KICAgICAgICAgICB5YXhpczIgPSBsaXN0KHRpdGxlID0gIkV4cG9zdXJlIiwgc2lkZSA9ICJyaWdodCIpKQ0KICANCiAgcmV0dXJuIChwKQ0KfQ0KYGBgDQoNCmBgYHtyfQ0KUExPVC5HUkFQSChEQVRBID0gSU5GT1JDRS5BVVRPLkRBVEEsDQogICAgICAgICAgIEJZLlZBUjEgPSAnVmVoX0FnZV9OYicsICMgbnVtZXJpYyANCiAgICAgICAgICAgQlkuVkFSMiA9ICdEcmlfR2VuZGVyX0NkJywgIyBjYXRlZ29yaWNhbA0KICAgICAgICAgICBBVkcgPSAnUHJtX1RybV9EcmlfVG90X0FtJywNCiAgICAgICAgICAgQ09MT1IuR1JBUEggPSBjKCJyZWQiLCJkYXJrZ3JlZW4iKSwNCiAgICAgICAgICAgWEFYSVMgPSAiVmVoaWNsZSBBZ2UiLA0KICAgICAgICAgICBZQVhJUyA9ICJBdmVyYWdlIFByZW1pdW0iKQ0KYGBgDQoNCg0K